use crate::modeling::scheduler::SchedulerTask;

#[async_trait::async_trait]
pub trait Scheduler {
    async fn load_tasks(&mut self) -> anyhow::Result<()>;

    async fn reload_tasks(&mut self) -> anyhow::Result<()>;

    async fn push_task(&mut self, task: SchedulerTask) -> anyhow::Result<()>;

    async fn tasks(&mut self, current: bool) -> anyhow::Result<Vec<SchedulerTask>>;

    async fn stop_task(&mut self, task_identifier: &String) -> anyhow::Result<()>;
}
